#pragma once

#include "Widgets/WidgetAttribute.h"
#include "Containers/String.h"
#include "Containers/ScriptDelegateImplement.h"

class RWindow;

namespace WHE
{
    struct SProgressBarModalWindowCreateParameter
    {
        //百分比
        TWidgetAttribute<float> Percentage;

        //百分比文本,用于提示用户当前进度，例如“正在下载文件... 50%”
        TWidgetAttribute<CString> PercentageText;

        //当取消按钮被点击时触发，如果不设置，则不显示取消按钮
        TScriptDelegate<void()> OnCanceled;
    };

    //显示一个拥有进度条的模态窗口
    //不能使用返回值来获取窗口对象，因为模态窗口会阻塞当前线程，在窗口关闭之前，函数不会返回
    void ShowProgressBarModalWindow(
        const SProgressBarModalWindowCreateParameter & InParameter
        ,TSharedObjectPtr<RWindow> & OutWindow
    );

    //关闭一个进度条模态窗口
    void CloseProgressBarModalWindow(TSharedObjectPtr<RWindow> InWindow);
}